/**
 * 配置管理API
 * 用于与后端配置控制层进行交互
 */
import http from '@/utils/http'

// 配置管理API接口
const configApi = {
  /**
   * 获取所有配置分组
   */
  getConfigGroups() {
    return http.get('/admin/config/groups')
  },

  /**
   * 根据分组获取配置
   * @param {string} groupName - 分组名称
   */
  getConfigByGroup(groupName) {
    return http.get(`/admin/config/group/${groupName}`)
  },

  /**
   * 根据键名获取配置
   * @param {string} configKey - 配置键名
   */
  getConfigByKey(configKey) {
    return http.get(`/admin/config/key/${configKey}`)
  },

  /**
   * 更新配置
   * @param {string} configKey - 配置键名
   * @param {any} configValue - 配置值
   */
  updateConfig(configKey, configValue) {
    return http.put('/admin/config/update', {
      config_key: configKey,
      config_value: configValue
    })
  },

  /**
   * 批量更新配置
   * @param {Array} configs - 配置列表，格式：[{config_key: string, config_value: any}]
   */
  batchUpdateConfigs(configs) {
    return http.put('/admin/config/batch-update', {
      configs: configs
    })
  },

  /**
   * 创建新配置
   * @param {Object} configData - 配置数据
   * @param {string} configData.config_key - 配置键名
   * @param {string} configData.config_value - 配置值
   * @param {string} configData.config_type - 配置类型
   * @param {string} configData.config_group - 配置分组
   * @param {string} configData.config_desc - 配置描述
   * @param {boolean} configData.is_encrypted - 是否加密
   * @param {boolean} configData.is_system - 是否系统配置
   */
  createConfig(configData) {
    return http.post('/admin/config/create', configData)
  },

  /**
   * 刷新配置缓存
   */
  refreshCache() {
    return http.post('/admin/config/refresh-cache')
  },

  /**
   * 获取公开的微信配置（不包含敏感信息）
   */
  getPublicWechatConfig() {
    return http.get('/admin/config/public/wechat')
  },

  /**
   * 获取公开的业务配置
   */
  getPublicBusinessConfig() {
    return http.get('/admin/config/public/business')
  },

  /**
   * 设置微信配置（管理员接口）
   * @param {string} appId - 微信AppID
   * @param {string} appSecret - 微信AppSecret
   */
  setWechatConfig(appId, appSecret) {
    return http.post('/admin/config/admin/wechat-config', {
      app_id: appId,
      app_secret: appSecret
    })
  }
}

export default configApi 